/*
 * 文件名：ParseDateUtil.java
 * 版权：Copyright by www.yunshows.com
 * 描述：
 * 修改人：Awoke
 * 修改时间：2020年2月13日
 * 跟踪单号：
 * 修改单号：
 * 修改内容：
 */

package top.infopub.job.util;


import java.math.BigDecimal;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;

import org.apache.commons.lang.time.DateUtils;

import com.google.common.collect.Maps;

import top.infopub.util.DateUtil;


/**
 * 统计相关解析工具类 
 * @author Awoke
 * @version 2020年2月13日
 * @see ParserUtil
 * @since
 */
public final class ParserUtil {

    /**
     * 一万
     */
    public static final BigDecimal TTS = new BigDecimal("10000");
    
    /**
     * 一百
     */
    public static final BigDecimal HUNDRED = new BigDecimal("100");

    /**
     * 解析date获得int年份
     * @param date
     * @return 
     * @see
     */
    public static int getYear(Date date) {
        if (date == null) {
            return 0;
        }
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        return c.get(Calendar.YEAR);
    }

    /**
     * 解析date获得int月份
     * @param date
     * @return 
     * @see
     */
    public static int getMonth(Date date) {
        if (date == null) {
            return 0;
        }
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        return c.get(Calendar.MONTH) + 1;// +1
    }

    /**
     * 元转成万元
     * @param num
     * @return 
     * @see
     */
    public static BigDecimal unit2Tts(BigDecimal num) {
        return num.divide(TTS);
    }

    /**
     * 元转成亿元
     * @param num
     * @return 
     * @see
     */
    public static BigDecimal unit2Hms(BigDecimal num) {
        return num.divide(TTS).divide(TTS);
    }

    /**
     * 万元转成元
     * @param num
     * @return 
     * @see
     */
    public static BigDecimal tts2Unit(BigDecimal num) {
        return num.multiply(TTS);
    }

    /**
     * 万元转成亿元
     * @param num
     * @return 
     * @see
     */
    public static BigDecimal tts2Hms(BigDecimal num) {
        return num.divide(TTS);
    }

    /**
     * 返回当前日期上一个月的1号0点
     * @return 
     * @see
     */
    public static Date prevMonth() {
        Date prev = DateUtils.addMonths(new Date(), -1);
        return DateUtil.timeDayInitial(DateUtils.setDays(prev, 1));
    }
    
    /**
     * 返回当月1号0点
     * @return 
     * @see
     */
    public static Date currentMonth() {
        return DateUtil.timeDayInitial(DateUtils.setDays(new Date(), 1));
    }
    
    /**
     * 返回当前日期的上一个月的int年
     * @param date
     * @return 
     * @see
     */
    public static int getYearOfPrevMonth() {
        return getYear(prevMonth());
    }

    /**
     * 返回当前日期的上一个月的int月份
     * @param date
     * @return 
     * @see
     */
    public static int getMonthOfPrevMonth() {
        return getMonth(prevMonth());
    }

    public static void main(String[] args) {
        System.out.println(prevMonth());
        System.out.println(getYearOfPrevMonth());
        System.out.println(getMonthOfPrevMonth());
        System.out.println(currentMonth());
        
        BigDecimal d1 = new BigDecimal("123.22");
        BigDecimal d2 = new BigDecimal("1223.2822");
        System.out.println( d1.divide(
            d2, 2, BigDecimal.ROUND_HALF_UP).setScale(4,
                BigDecimal.ROUND_HALF_UP));
        
        System.out.println( d1.divide(
            d2, 4, BigDecimal.ROUND_HALF_UP));
        
        Map<String, BigDecimal> areaProfitMap = Maps.newHashMap();
        areaProfitMap.put("1", BigDecimal.ZERO);
        areaProfitMap.put("2", BigDecimal.ZERO);
        
        if (areaProfitMap.containsKey("1")) {
            areaProfitMap.put("1",
                areaProfitMap.get("1").add(BigDecimal.TEN));
        }
        System.out.println(areaProfitMap.get("1"));
        
    }

}
